package br.com.jbssistemas.dirfweb.managedbeans;

import br.com.jbssistemas.dirfweb.daos.AdministradorDAO;
import br.com.jbssistemas.dirfweb.daos.BeneficiarioDAO;
import br.com.jbssistemas.dirfweb.daos.DirfItemDAO;
import br.com.jbssistemas.dirfweb.entidades.Administrador;
import br.com.jbssistemas.dirfweb.entidades.Beneficiario;
import br.com.jbssistemas.dirfweb.entidades.DirfItem;
import br.com.jbssistemas.dirfweb.util.Sessao;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;

/**
 *
 * @author Renato Machado
 *
 */
@Named(value = "acessoMB")
@SessionScoped
public class AcessoMB implements Serializable {

    /**
     * *****
     */
    private DirfItem dirfItem;
    private List<DirfItem> dirfsItens;

    @Inject
    private DirfItemDAO dirfItemDAO;
    /**
     * *****
     */
    private Beneficiario beneficiario = new Beneficiario();
    private Administrador administrador = new Administrador();
    /**
     * *****
     */
    private Date data;

    public AcessoMB() {
    }

    public String acessar() {

        try {

            beneficiario = new BeneficiarioDAO()
                    .getByDocumento(beneficiario.getDocumento());

        } catch (Exception ex) {
            Logger.getLogger(AcessoMB.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (beneficiario != null) {
            return "dirf";
        }

        return "index.xhtml?faces-redirect=true";
    }

    public String loginADM() {

        try {
            administrador = new AdministradorDAO()
                    .getByLogin(administrador.getLogin(), administrador.getSenha());

        } catch (Exception ex) {
            Logger.getLogger(AcessoMB.class.getName()).log(Level.SEVERE, null, ex);
        }

        if (administrador != null) {
            return "/administracao/administracao";
        }

        return "index.xhtml?faces-redirect=true";
    }

    public String logout() {
        administrador = new Administrador();
        Sessao.destruirSessao();
        return "index.xhtml?faces-redirect=true";
    }

    public DirfItem getDirfItem() {
        return dirfItem;
    }

    public void setDirfItem(DirfItem dirfItem) {
        this.dirfItem = dirfItem;
    }

    public List<DirfItem> getDirfsItens() throws Exception {
        if (dirfsItens == null) {
            dirfsItens = dirfItemDAO.getDirfsByBeneficiario(beneficiario);
        }
        return dirfsItens;
    }

    public void setDirfsItens(List<DirfItem> dirfsItens) {
        this.dirfsItens = dirfsItens;
    }

    public Beneficiario getBeneficiario() {
        return beneficiario;
    }

    public void setBeneficiario(Beneficiario beneficiario) {
        this.beneficiario = beneficiario;
    }

    public Administrador getAdministrador() {
        return administrador;
    }

    public void setAdministrador(Administrador administrador) {
        this.administrador = administrador;
    }

    public Date getData() {
        return data;
    }

    public void setData(Date data) {
        this.data = data;
    }

}
